package framework.view {
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.events.Event;
	import org.osflash.signals.natives.NativeSignal;

	/**
	 * @author Charlie MacIsaac
	 */
	
	public class BlitCanvasView extends Bitmap {
		// PROPERTIES =============================================================================
		private var _children : Array;
		private var _color : uint;
		
		// GETTERS + SETTERS ======================================================================
		public function set color(value : uint) : void { _color = value; }
		
		// CONSTRUCTOR ============================================================================
		public function BlitCanvasView() {
			_children = [];
		}
		
		// PUBLIC =================================================================================
		public function init(color : uint = 0xFFFFFF) : void {
			_color = color
			
			drawCanvas();
		}
		
		public function addChild(child : BlitDisplayObjectView) : void {
			child.canvas = this;
			_children.push(child);
		}
		
		public function removeChild(child : BlitDisplayObjectView) : void {
			var childIndex : int = _children.indexOf(child);
			_children.splice(childIndex, 1);
		}
		
		// PRIVATE ================================================================================
		private function drawCanvas() : void {
			if (this.stage) {
				bitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, false, _color);
			}
		}
		
		public function render() : void {
			bitmapData.fillRect(stage.getRect(this), _color);
			
			for each (var child : BlitDisplayObjectView in _children) {
				child.render();
			}
		}
		
		// LISTENERS ==============================================================================
	}
}